import {
    request
} from "../../request/index.js";
import {
    requestPayment,
    showToast,
} from "../../utils/asyncWx.js";

// pages/pay/pay.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        address: {},
        checkedCart: [],
        totalPrice: 0,
        totalNum: 0
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onLoad: function (e) {
        const checkGoods = e.checkGoods.split(',');
        const address = wx.getStorageSync('address');
        const cart = wx.getStorageSync('cart') || [];
        let checkedCart = [];
        checkGoods.forEach(v=>checkedCart.push(...cart.filter(i=>i.goods_id==v)));
        this.setData({
            address
        })
        this.setCart(checkedCart)
    },

    // 设计购物车信息 计算总价格 总数量 全选标志
    setCart(checkedCart) {
        //总价格 总数量
        let totalPrice = 0;
        let totalNum = 0;
        checkedCart.forEach(v => {
            totalPrice += v.goods_price * v.num;
            totalNum += v.num;
        })
        this.setData({
            checkedCart,
            totalPrice,
            totalNum
        });
    },
    // 微信支付
    // 企业账号
    // 企业账号的小程序后台中 必须 给开发者 添加上白名单
    // 一个 appid 可以同时绑定多个开发者
    // 开发者可以共用这个 appid 和 他的开发权限

    // 创建订单号、先获取用户登录成功的token
    // 登录按钮想判断是否有token 没有跳转到授权页面 进行获取
    // 有token 创建订单 获取订单编号
    // 完成支付
    // 手动删除缓存中 已选中的商品
    // 删除后的购物车的数据填充回缓存
    // 再跳转页面
    async handlePayGoods() {
        try {
            // 判断缓存中有么有token
            const token = wx.getStorageSync('token');
            if (!token) {
                wx.navigateTo({
                    url: '/pages/auth/auth',
                });
                return;
            }
            // 创建订单
            // 创建订单要的请求头参数 转为请求时自动识别添加
            // const header = {
            //     Authorzation: token
            // };
            // 请求体参数
            const order_price = this.data.totalPrice;
            const consignee_addr = this.data.address.allAddresss;
            let goods = [];
            this.data.checkedCart.forEach((v) => goods.push({
                goods_id: v.goods_id,
                goods_number: v.num,
                goods_price: v.goods_price
            }));
            // 准备发送请求 创建订单 获取订编号
            const orderParams = {
                order_price,
                consignee_addr,
                goods
            }
            const res = await request({
                url: "/my/orders/create",
                method: "POST",
                data: orderParams
            });
            // 因为没有token 所以获取不到订单编号
            // 假装有订单编号
            const order_number = res.order_number || "HMDD20190802000000000422";
            // 发起预支付的借口
            // const res_pay = await request({
            //     method: "POST",
            //     url: "/my/orders/req_unifiedorder",
            //     data: {
            //         order_number
            //     }
            // });
            const pay = {
                "timeStamp": "1564730510",
                "nonceStr": "SReWbt3nEmpJo3tr",
                "package": "prepay_id=wx02152148991420a3b39a90811023326800",
                "signType": "MD5",
                "paySign": "3A6943C3B865FA2B2C825CDCB33C5304"
            } || res_pay.message.pay;
            // 发起微信支付
            // await requestPayment(pay);
            // 查询后台 订单状态
            // const checkOrder = await request({
            //     method: "POST",
            //     url: "/my/orders/chkOrder",
            //     data: {
            //         order_number
            //     }
            // });
            await showToast({title: "支付成功",icon:"success"});
            // 手动删除已经完成支付的商品,并填充回缓存
            let newCart = wx.getStorageSync('cart');
            newCart = newCart.filter(v=>!v.checked);
            wx.setStorageSync('cart', newCart);
            // 支付成功跳转订单页面
            wx.navigateTo({
              url: '/pages/order/order',
            });

        } catch (error) {
            await showToast({title: "支付失败",icon:"error"});
            console.log(error);
        }
    },

})